(function(e){if("function"==typeof bootstrap)bootstrap("jade",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeJade=e}else"undefined"!=typeof window?window.jade=e():global.jade=e()})(function(){var define,ses,bootstrap,module,exports;
    return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
// nothing to see here... no file methods for the browser

    },{}],2:[function(require,module,exports){

        /*!
         * Jade - runtime
         * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
         * MIT Licensed
         */

        /**
         * Lame Array.isArray() polyfill for now.
         */

        if (!Array.isArray) {
            Array.isArray = function(arr){
                return '[object Array]' == Object.prototype.toString.call(arr);
            };
        }

        /**
         * Lame Object.keys() polyfill for now.
         */

        if (!Object.keys) {
            Object.keys = function(obj){
                var arr = [];
                for (var key in obj) {
                    if (obj.hasOwnProperty(key)) {
                        arr.push(key);
                    }
                }
                return arr;
            }
        }

        /**
         * Merge two attribute objects giving precedence
         * to values in object `b`. Classes are special-cased
         * allowing for arrays and merging/joining appropriately
         * resulting in a string.
         *
         * @param {Object} a
         * @param {Object} b
         * @return {Object} a
         * @api private
         */

        exports.merge = function merge(a, b) {
            var ac = a['class'];
            var bc = b['class'];

            if (ac || bc) {
                ac = ac || [];
                bc = bc || [];
                if (!Array.isArray(ac)) ac = [ac];
                if (!Array.isArray(bc)) bc = [bc];
                a['class'] = ac.concat(bc).filter(nulls);
            }

            for (var key in b) {
                if (key != 'class') {
                    a[key] = b[key];
                }
            }

            return a;
        };

        /**
         * Filter null `val`s.
         *
         * @param {*} val
         * @return {Boolean}
         * @api private
         */

        function nulls(val) {
            return val != null && val !== '';
        }

        function valueOf(obj) {
            return obj && 'function' === typeof obj.valueOf ? obj.valueOf() : obj;
        }

        /**
         * join array as classes.
         *
         * @param {*} val
         * @return {String}
         * @api private
         */

        function joinClasses(val) {
            return Array.isArray(val) ? val.map(joinClasses).filter(nulls).join(' ') : valueOf(val);
        }

        /**
         * Render the given attributes object.
         *
         * @param {Object} obj
         * @param {Object} escaped
         * @return {String}
         * @api private
         */

        exports.attrs = function attrs(obj, escaped){
            var buf = []
                , terse = obj.terse;

            delete obj.terse;
            var keys = Object.keys(obj)
                , len = keys.length;

            if (len) {
                buf.push('');
                for (var i = 0; i < len; ++i) {
                    var key = keys[i]
                        , val = obj[key];

                    if ('boolean' == typeof val || null == val) {
                        if (val) {
                            terse
                                ? buf.push(key)
                                : buf.push(key + '="' + key + '"');
                        }
                    } else if (0 == key.indexOf('data') && 'string' != typeof val) {
                        buf.push(key + "='" + JSON.stringify(valueOf(val)) + "'");
                    } else if ('class' == key) {
                        if (escaped && escaped[key]){
                            if (val = exports.escape(joinClasses(val))) {
                                buf.push(key + '="' + val + '"');
                            }
                        } else {
                            if (val = joinClasses(val)) {
                                buf.push(key + '="' + val + '"');
                            }
                        }
                    } else if (escaped && escaped[key]) {
                        buf.push(key + '="' + exports.escape(valueOf(val)) + '"');
                    } else {
                        buf.push(key + '="' + val + '"');
                    }
                }
            }

            return buf.join(' ');
        };

        /**
         * Escape the given string of `html`.
         *
         * @param {String} html
         * @return {String}
         * @api private
         */

        exports.escape = function escape(html){
            return String(html)
                .replace(/&/g, '&amp;')
                .replace(/</g, '&lt;')
                .replace(/>/g, '&gt;')
                .replace(/"/g, '&quot;');
        };

        /**
         * Re-throw the given `err` in context to the
         * the jade in `filename` at the given `lineno`.
         *
         * @param {Error} err
         * @param {String} filename
         * @param {String} lineno
         * @api private
         */

        exports.rethrow = function rethrow(err, filename, lineno, str){
            if (!(err instanceof Error)) throw err;
            if ((typeof window != 'undefined' || !filename) && !str) {
                err.message += ' on line ' + lineno;
                throw err;
            }
            try {
                str =  str || require('fs').readFileSync(filename, 'utf8')
            } catch (ex) {
                rethrow(err, null, lineno)
            }
            var context = 3
                , lines = str.split('\n')
                , start = Math.max(lineno - context, 0)
                , end = Math.min(lines.length, lineno + context);

            // Error context
            var context = lines.slice(start, end).map(function(line, i){
                var curr = i + start + 1;
                return (curr == lineno ? '  > ' : '    ')
                    + curr
                    + '| '
                    + line;
            }).join('\n');

            // Alter exception message
            err.path = filename;
            err.message = (filename || 'Jade') + ':' + lineno
                + '\n' + context + '\n\n' + err.message;
            throw err;
        };

        /**
         * Contains globals for jade scoping
         * @type {Object}
         */

        exports.globals = {};

    },{"fs":1}]},{},[2])(2)
});